In the case of carrying out communication (inter-process communication) between a plurality of distributed processes for executing tasks in real time, the proceeding status of the task is different depending on the weight, priority, processing cycle and the like of the processing of each process. For example, if the processing result (data) of a process A which is executed at a high speed is transmitted from the process A to a process B which is executed at a low speed, the process B is filled with the received queues from the process A and the received queues overflow. Such a problem of overflowing queues occurs at various sites in a system operating in real time. In order to prevent this problem, handshaking between the processes must be carried out by a certain technique. For example, the following three techniques are proposed (Basics and Application of OS, A. S. Tannenbaum, Toppan, p.464):
(1) blocking transmission;
(2) non-blocking transmission which involves copying; and
(3) non-blocking transmission which involves interrupt.
These three techniques (1) to (3) are proposed. The blocking transmission (1) is a transmission technique in which The transmitting side waits until transmission is completed and the queues at destination are emptied. The non-blocking transmission which involves copying (2) is a transmission technique in which data is copied into an area of the system so as to let the process on the transmitting side proceed. The non-blocking transmission which involves interrupt (3) is a transmission technique in which writing to a transmission buffer is carried out by interrupt processing.
Meanwhile, though it can be said that the above-described blocking transmission (1) is a safe and secure transmission technique, this technique is not practical because when freely changing the connection of software or process as a component (for example, object-oriented software, hereinafter referred to as object), a deadlock may easily occur depending on the way of connection.
Object-oriented software is constituted, for example, in a pet-like robot device or the like. A pet-like robot device makes, for example, gestures similar to those of a certain animal in accordance with various processing (for example, data communication) through inter-object communication (or inter-process communication).
The above-described non-blocking transmission which involves copying (2) is less efficient because it repeats redundant copying. For example, in inter-object communication where communications (or connections) between a plurality of objects and a plurality of objects are permitted, an increase in the number of connections causes an increase in the number of times of copying and hence the number of memories used as buffers.
In the above-described non-blocking transmission which involves interrupt (3), no redundant copying from the transmission buffer is carried out, thus saving the time for carrying out the subsequent processing. However, since the interrupt notifies the user of the information that the transmission buffer has been made writable again, it becomes more difficult for the user to handle the programming. Therefore, the non-blocking transmission which involves interrupt (3) is considered to have more problems than advantages.
Thus, it is desired to realize the elimination of redundant copying from the transmission buffer as in the non-blocking transmission which involves interrupt (3) while solving the problems of this technique so that the user will not feel the handling troublesome.